#include<iostream>
using namespace std;
class MyStack;

class listNode{
    friend class MyStack;
private:
    listNode* next;
    int data;
public:
    listNode();
    listNode(int nodeData, listNode* succ = NULL);
};

class MyStack
{
private:
    listNode* topNode;
    int stackSize;


public:
    MyStack();
    ~MyStack();
    bool isEmpty()const;
    bool push(const int& x);
    bool pop(int& x);
    bool getTop(int& x);
    void printStack();
    bool getTop(char& item);
    bool pop(char& item);
};
class MyQueue
{
private:
    int* queue;
    int capacity;
    int front;
    int rear;

public:
    MyQueue(const int& x);
    ~MyQueue();

    bool enQueue(const int& x);
    bool deQueue(int& x);
    bool getFront(int& x);
    void printQueue();
    bool isFull();
    bool isEmpty();
};

bool postfixExpression(const string& exp, string& result);

bool expressionVal(const string& exp, int& result);

void yanghui(const int& num_rows);

int getOperatorPriority(const char& c);
